class Solution {
    public String longestPalindrome(String s) {
        if (s == null || s.length() < 1) {
            return "";
        }
        String str = "";
        char[] chars = s.toCharArray();  // 可变类型
        int len = chars.length;
        boolean[][] res = new boolean[len][len];  //
        int start = 0;  // 回文起始位置
        int max = 1;  // 回文长度
        for (int i = 0; i < len; ++i) {  // 回文字符串结束位置
            for (int j = 0; j <= i; ++j) {  // 起始位置遍历
                // 上三角全为1，上三角相邻对角的取值逻辑，以及动态规划逻辑
                res[j][i] = i - j < 2 ? chars[j] == chars[i] : res[j + 1][i - 1] && chars[j] == chars[i];

                if (res[j][i] && max < i - j + 1) {
                    max = i - j + 1;
                    start = j;
                }

            }
        }

        return s.substring(start, start + max);  // 字符串截取

    }
}